package com.znsb.msfq.activity;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

import com.znsb.msfq.BaseActivity;
import com.znsb.msfq.R;
import com.znsb.msfq.utils.ActivityUtil;
import com.znsb.msfq.utils.LogUtils;

import java.util.List;

/**
 * 名称：
 * 创建时间：2016/10/20.
 * 作者：杨广
 * 手机号：13330359437
 * 说明：
 */
public class WebViewActivity extends BaseActivity implements View.OnClickListener {

    private WebView webView;
    private String url, title;//链接
    private TextView titleView;//标题
    private boolean isa = false;

    @Override
    protected int getlayoutView() {
        return R.layout.act_webview;
    }

    @Override
    protected void initView(View view) {
        webView = (WebView) view.findViewById(R.id.webview_wb);
        titleView = (TextView) view.findViewById(R.id.title_text);
        view.findViewById(R.id.title_back).setOnClickListener(this);

    }

    @Override
    protected void initData() {
        //设置项
        webSettings();

        Bundle bundle = getIntent().getExtras();
        try {
            isa = bundle.containsKey("isadvert");
            if (bundle.containsKey("title")) {
                title = bundle.getString("title");
            }
            if (bundle.containsKey("url")) {
                url = bundle.getString("url");//拿到链接
            }

        } catch (Exception e) {
        }


        titleView.setText(title != null ? title : getResources().getString(R.string.app_name));
        toWebView(url);
    }

    @Override
    protected void clickListener(View view) {

    }

    @Override
    // 设置回退
    // 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (isa) {
            ActivityUtil.nextf(WebViewActivity.this, MainActivity.class);
            return true;
        }
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            if (webView.canGoBack()) {
                webView.goBack(); // goBack()表示返回WebView的上一页面
                return true;
            }
            ActivityUtil.goBack(this);
            return true;

        }
        return super.onKeyDown(keyCode, event);
    }

    /**
     * WebView 显示网页
     */
    private void toWebView(String url) {
        webView.requestFocusFromTouch();//支持获取手势焦点，便于用户输入

        //WebView加载web资源
        webView.loadUrl(url);
//        webView.loadDataWithBaseURL(null, url, "text/html", "UTF-8", null);

        //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为，使网页用WebView打开
        webView.setWebViewClient(new WebViewClient() {
            //此处能拦截超链接的url,即拦截href请求的内容.
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                LogUtils.i("TAG", "URL=" + url);
                view.loadUrl(url);
                return true;
            }

            //重写此方法才能够处理在浏览器中的按键事件。
//            public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
//
//                return true;
//            }

//            //重写此方法可以让webview处理https请求。
//            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//
//
//            }
//
//            //在 开始 载入页面 调用的，通常我们可以在这设定一个loading的页面，告诉用户程序在等待网络响应。
//            public void onPageStarted(WebView view, String url, Bitmap favicon) {
//
//            }
//
//            //在 页面 加载结束 时调用。我们知道一个页面载入完成，于是我们可以关闭loading 条，切换程序动作。
//            public void onPageFinished(WebView view, String url) {
//
//            }
        });

        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);
                if (progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });
    }

    /**
     * WebView 的一些设置
     */
    private void webSettings() {
        WebSettings settings = webView.getSettings();
        settings.setDomStorageEnabled(true);
        settings.setJavaScriptEnabled(true);//启用支持javascript
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存
//        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
        settings.setUseWideViewPort(true);//设置此属性，可任意比例缩放
        settings.setLoadWithOverviewMode(true);//缩放至屏幕大小
        settings.setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
        settings.setLoadsImagesAutomatically(true);  //支持自动加载图片
        settings.setBuiltInZoomControls(true);//支持缩放
        settings.setSupportZoom(true);//支持缩放
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//支持内容重新布局
    }

    /**
     * 判断qq是否可用
     *
     * @param context
     * @return
     */
    public static boolean isQQClientAvailable(Context context) {
        final PackageManager packageManager = context.getPackageManager();
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        if (pinfo != null) {
            for (int i = 0; i < pinfo.size(); i++) {
                String pn = pinfo.get(i).packageName;
                if (pn.equals("com.tencent.mobileqq")) {
                    return true;
                }
            }
        }
        return false;
    }


    @Override
    public void onClick(View v) {
//        返回
        switch (v.getId()) {

            case R.id.title_back:
                if (isa) {
                    ActivityUtil.nextf(WebViewActivity.this, MainActivity.class);
                } else {
//                    webView.goBack(); // goBack()表示返回WebView的上一页面
                    ActivityUtil.goBack(this);
                }

                break;
        }

    }
}
